package cn.wolfcode.trip.admin.controller;

import cn.wolfcode.trip.base.domain.Region;
import cn.wolfcode.trip.base.service.IRegionService;
import cn.wolfcode.trip.base.util.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 地区controller
 */
@Controller
@RequestMapping("/region")
public class RegionController {

    @Autowired
    private IRegionService regionService;


    /**
     * 跳转地区管理页面
     * @return
     */
    @RequestMapping("/list")
    public String list(){
        return "region/list";
    }


    /**
     * 查询某个地区下的子地区
     * @param parentId : 父类地区的id
     * @param type : 区分响应数据的格式; 值为tree 时 返回treeview插件需要的格式
     * @return
     */
    @RequestMapping("/listByParentId")
    @ResponseBody
    public List listByParentId(Long parentId, String type){
       List<Region> list = regionService.listByParentId(parentId);
       //根据类型区分查节点还是数据
        if("tree".equals(type)){
            //响应treeview需要的格式的数据
            ArrayList treeList=new ArrayList();
            //循环遍历把每个对象都转为响应的格式
            for( Region region : list){
                Map map=region.toTreeMap();
                treeList.add(map);
            }
            return treeList;
        }
            return  list;
    }

    /**
     * 新增与保存地区信息
     * @param region
     * @return
     */
    @RequestMapping("/saveOrUpdate")
    @ResponseBody
    public JsonResult saveOrUpdate(Region region){
        JsonResult jsonResult=new JsonResult();
        try {
            if(region.getId() != null){
                regionService.update(region);
            }else {
                regionService.save(region);
            }
        } catch (Exception e) {
            e.printStackTrace();
            jsonResult.mark("操作失败");
        }
        return jsonResult;
    }

}
